#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
using Cephei.QL.Times;
using Cephei.QL.Termstructures.Volatility;
namespace Cephei.QL.Experimental.Volatility
{
     // <summary> 
	// ! This abstract class defines the interface of concrete Equity/FX volatility (smile) surfaces which will be derived from this one.  Volatilities are assumed to be expressed on an annual basis.  It's only in absence of smile that the concept of (at-the-money) forward volatility makes sense.
	// </summary>
    [Guid ("8F42FAC9-FE4C-4163-A0BB-07B3F458F69D"),ComVisible(true)]
	public interface IEquityFXVolSurface : Cephei.QL.Experimental.Volatility.IBlackVolSurface
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 Double AtmForwardVariance(Double time1, Double time2, Microsoft.FSharp.Core.FSharpOption<Boolean> extrapolate);
        
		 Double AtmForwardVariance(DateTime date1, DateTime date2, Microsoft.FSharp.Core.FSharpOption<Boolean> extrapolate);
        
		 Double AtmForwardVol(Double time1, Double time2, Microsoft.FSharp.Core.FSharpOption<Boolean> extrapolate);
        
		 Double AtmForwardVol(DateTime date1, DateTime date2, Microsoft.FSharp.Core.FSharpOption<Boolean> extrapolate);
    }

    // <summary> 
	// ! This abstract class defines the interface of concrete Equity/FX volatility (smile) surfaces which will be derived from this one.  Volatilities are assumed to be expressed on an annual basis.  It's only in absence of smile that the concept of (at-the-money) forward volatility makes sense. Factory
	// </summary>
   	[ComVisible(true)]
    public interface IEquityFXVolSurface_Factory // : Collection_Factory<IEquityFXVolSurface, ICell<IEquityFXVolSurface>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
    }
}

